# RSpec FOSS impact pipeline loaded dynamically by script: scripts/generate_rspec_pipeline.rb

include:
  - local: .gitlab/ci/rails/shared.gitlab-ci.yml

default:
  image: $DEFAULT_CI_IMAGE
  tags:
    - gitlab-org
  # Default job timeout set to 90m https://gitlab.com/gitlab-com/gl-infra/infrastructure/-/issues/10520
  timeout: 90m
  interruptible: true

stages:
  - test

dont-interrupt-me:
  extends: .rules:dont-interrupt
  stage: .pre
  interruptible: false
  script:
    - echo "This jobs makes sure this pipeline won't be interrupted! See https://docs.gitlab.com/ee/ci/yaml/#interruptible."

.base-rspec-foss-impact:
  extends: .rspec-base-pg14-as-if-foss
  needs:
    - pipeline: $PARENT_PIPELINE_ID
      job: detect-tests
    - pipeline: $PARENT_PIPELINE_ID
      job: setup-test-env
    - pipeline: $PARENT_PIPELINE_ID
      job: retrieve-tests-metadata
    - pipeline: $PARENT_PIPELINE_ID
      job: compile-test-assets as-if-foss
  rules:
    - when: always
  variables:
    RSPEC_TESTS_FILTER_FILE: "${RSPEC_MATCHING_TESTS_FOSS_PATH}"
    RSPEC_TESTS_MAPPING_ENABLED: "true"
  script:
    - !reference [.base-script, script]
    - rspec_paralellized_job "--fail-fast=${RSPEC_FAIL_FAST_THRESHOLD} --tag ~quarantine --tag ~level:background_migration --tag ~zoekt --tag ~click_house"
  artifacts:
    expire_in: 7d
    paths:
      - "${RSPEC_MATCHING_TESTS_FOSS_PATH}"
      - tmp/capybara/

<% if rspec_files_per_test_level[:migration][:files].size > 0 %>
rspec migration foss-impact:
  extends: .base-rspec-foss-impact
<% if rspec_files_per_test_level[:migration][:parallelization] > 1 %>
  parallel: <%= rspec_files_per_test_level[:migration][:parallelization] %>
<% end %>
  script:
    - !reference [.base-script, script]
    - rspec_paralellized_job "--fail-fast=${RSPEC_FAIL_FAST_THRESHOLD} --tag ~quarantine --tag ~zoekt --tag ~click_house"
<% end %>

<% if rspec_files_per_test_level[:background_migration][:files].size > 0 %>
rspec background_migration foss-impact:
  extends: .base-rspec-foss-impact
<% if rspec_files_per_test_level[:background_migration][:parallelization] > 1 %>
  parallel: <%= rspec_files_per_test_level[:background_migration][:parallelization] %>
<% end %>
<% end %>

<% if rspec_files_per_test_level[:unit][:files].size > 0 %>
rspec unit foss-impact:
  extends: .base-rspec-foss-impact
<% if rspec_files_per_test_level[:unit][:parallelization] > 1 %>
  parallel: <%= rspec_files_per_test_level[:unit][:parallelization] %>
<% end %>
<% end %>

<% if rspec_files_per_test_level[:integration][:files].size > 0 %>
rspec integration foss-impact:
  extends: .base-rspec-foss-impact
<% if rspec_files_per_test_level[:integration][:parallelization] > 1 %>
  parallel: <%= rspec_files_per_test_level[:integration][:parallelization] %>
<% end %>
<% end %>

<% if rspec_files_per_test_level[:system][:files].size > 0 %>
rspec system foss-impact:
  extends: .base-rspec-foss-impact
<% if rspec_files_per_test_level[:system][:parallelization] > 1 %>
  parallel: <%= rspec_files_per_test_level[:system][:parallelization] %>
<% end %>
<% end %>
